package com.chentf.aspect;

import com.chentf.entity.User;
import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;

/**
 * @author chentengfei
 * @desc ...
 * @date 2021-01-24 21:49:41
 */
//ApplicationContextAware用来获取已创建的ApplicationContext工厂对象
public class UserServiceImpl implements UserService, ApplicationContextAware {
    private ApplicationContext ctx;

    @Override
    public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
        this.ctx = applicationContext;
    }

    @Override
    public void login(String username, String password) {
        System.out.println("UserServiceImpl.login");
        //调用的是原始对象的login方法 ---> 核心功能
        /*
            设计目的：代理对象的login方法 --->  额外功能+核心功能
            ApplicationContext ctx = new ClassPathXmlApplicationContext("/applicationContext2.xml");
            UserService userService = (UserService) ctx.getBean("userService");
            userService.login();
            Spring工厂重量级资源 一个应用中 应该只创建一个工厂
         */
        //通过这种方式来实现方法间的调用,这样的话切面才可以在下面调用的方法之前用到
        UserService userService = (UserService) ctx.getBean("userService");
        userService.login("chentf", "123456");
    }

    @Override
    public void register(User user) {
        System.out.println("UserServiceImpl.register");
    }


}
